package com.im.tcp.register;

import com.lld.im.common.config.ImTcpConfig;
import com.lld.im.common.constants.Constants;
import lombok.extern.slf4j.Slf4j;

/**
 * 将当前服务器信息注册到zookeeper
 * 【注意:使用zookeeper的前提是使用了分布式服务 这里主要是处理分布式集群部署的服务发现与注册】
 */
@Slf4j
public class ZKRegister implements Runnable {

    private String ip;

    private ImTcpConfig imTcpConfig;
    private ZKKit zkKit;

    public ZKRegister(String ip, ImTcpConfig imTcpConfig, ZKKit zkKit) {
        this.ip = ip;
        this.imTcpConfig = imTcpConfig;
        this.zkKit = zkKit;
    }

    @Override
    public void run() {
        zkKit.createRootNode();
        String pathWeb= Constants.ImCoreZkRoot+Constants.ImCoreZkRootWeb+  "/"+ip+":"+imTcpConfig.getWebsocketPort();
        //根据ip和端口 创建节点
        zkKit.createNode(pathWeb);
        String pathTcp= Constants.ImCoreZkRoot+Constants.ImCoreZkRootTcp+"/"+ip+":"+imTcpConfig.getTcpServerPort();
        //根据ip和端口 创建节点
        zkKit.createNode(pathTcp);
        log.info("注册成功！{}",pathWeb);
    }
}
